package cn.lkk.samples.lang.interfaces.callbacks;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Date;

/**
 * 演示 Timer 类与回调机制。
 * Timer 是一个定时器，每到固定的时间就触发一个事件，通过编写接口实现回调方法，并将该方法监听该时间。
 */
public class TimerTest {

    public static void main(String[] args) {
        ActionListener listener = new TimerPrinter();

        //创建一个定时器，每5s触发一个事件
        Timer t = new Timer(5000, listener);
        t.start();

        //询问是否退出程序
        JOptionPane.showMessageDialog(null, "Quit program?");
        System.exit(0);
    }
}

class TimerPrinter implements ActionListener{

    @Override
    public void actionPerformed(ActionEvent e) {
        Date now = new Date();
        System.out.println("At the tone, the time is " + now);
        Toolkit.getDefaultToolkit().beep();
    }
}
